#!/bin/sh

# 内存检查命令,超过指定内存大小后主动生成coredump文件

# 运行命令
# sh chk_mem.sh [program]
# eg.
#    sh chk_mem.sh apm_m2_0106

#linux命令
PIDOF=/sbin/pidof
PIDSTAT=/usr/bin/pidstat

#常用定义(根据环境修改下面参数)
var_app_name="apm"
var_mem_percent=0
var_max_mem=50
var_app_cnt=0

if [ $# -ge 1 ]; then
    var_app_name=$1
fi

#更改工作目录
cd `dirname $0`
pwd

#检查环境
check_env()
{
	local username=`whoami`
	if [ "$username" != "root" ]; then
		echo "please run root"
		exit
	fi
	
	return 1;
}

#运行环境检查
check_env;

var_app_cnt=`${PIDOF} ${var_app_name} | wc -l`
if [ ${var_app_cnt} -le 0 ]; then
    echo "${var_app_name} is not run!"
    exit
fi

#检查应用程序是否已经运行
var_mem_percent=`${PIDSTAT} -urht -p $( ${PIDOF} ${var_app_name}) 1 1 | awk 'NR==4, NR==4 {print $13}' | awk -F "." '{print $1}' `
echo ${var_mem_percent}
if [ ${var_mem_percent} -gt ${var_max_mem} ]; then
    echo "${var_app_name} mem over size!"
    ${PIDOF} ${var_app_name} | xargs kill -11 
fi

